#ifndef LAYOUTMANAGER_H
#define LAYOUTMANAGER_H
#include "qdock.h"

class QLayoutManager {
public:
    virtual QDockItem *baseDockFromPoint(Window target_window, const QPoint &QPoint);
    virtual QDockItem* itemFromPoint(QDockItem* target_window, const QPoint& QPoint, bool chase_indicators = true);
    virtual QRect dockedSize(QDockItem* dragged_widget, QWidget* target_widget, DockOption dockoption);
    virtual void dock(QDockItem *dragged_widget, QWidget *target_widget, DockOption dockoption);
    virtual void undock(QDockItem* widget);
    virtual std::unordered_set<QDockItem *> getBasicDocks();
    void addToplevelDock(QDockItem *base_dock);

protected:
    virtual QRect dock(QDockItem *dragged_widget, QWidget *target_widget, DockOption dockoption, bool simulate);
    virtual QRect dockTabbed(QDockItem *dragged_widget, QDockItem *target_widget, bool simulate);
protected:
   std::unordered_set<QDockItem*> m_toplevel_docks;
};


#endif // LAYOUTMANAGER_H
